#!/bin/sh

DIR_BASE="`pwd`"
DIR_USR=${DIR_BASE}/usr

##### Chequeando prerequisitos:
	##### Comando "sed".
	sed --version
	#Si no se encontro salimos del script
	if [ $? -ne 0 ]
	then
	  echo "Error. No se encontro el comando sed"
	  return -1
	fi
	
	##### Comando "gawk".
	whereis awk  
	#Si no se encontro salimos del script
	if [ $? -ne 0 ]
	then
      echo "Error. No se encontro el comando gawk"
	  return -1
	fi

	##### Comando "tr".
	tr --version
	#Si no se encontro salimos del script
	if [ $? -ne 0 ]
	then
      echo "Error. No se encontro el comando tr"
	  return -1
	fi



# Detectando archivos para compilar en /usr
	cd $DIR_USR
	cp Makefile Makefile.tmp
	BIN_LIST_USR=`ls *.c | sed 's/\.c/\.bin /g' | tr -d "\n"`
	sed -e 's/^.*OBJETOS_USR:=.*/OBJETOS_USR:= '"$BIN_LIST_USR"'/g' Makefile.tmp > Makefile
	if [ $? -ne 0 ]
	then
	  cp Makefile.tmp Makefile
	fi
	rm Makefile.tmp

# Detectando archivos para compilar en /usr/tst
	cd $DIR_USR/tst
	cp Makefile Makefile.tmp
	BIN_LIST_TST=`ls *.c | sed 's/\.c/\.bin /g' | tr -d "\n"`
	sed -e 's/^.*OBJETOS_TST:=.*/OBJETOS_TST:= '"$BIN_LIST_TST"'/g' Makefile.tmp > Makefile
	if [ $? -ne 0 ]
	then
	  cp Makefile.tmp Makefile
	fi
	rm Makefile.tmp
	
# Detectando archivos para compilar en /usr/bin
	cd $DIR_USR/bin
	cp Makefile Makefile.tmp
	BIN_LIST_BIN=`ls *.c | sed 's/\.c/\.bin /g' | tr -d "\n"`
	sed -e 's/^.*OBJETOS_BIN:=.*/OBJETOS_BIN:= '"$BIN_LIST_BIN"'/g' Makefile.tmp > Makefile
	if [ $? -ne 0 ]
	then
	  cp Makefile.tmp Makefile
	fi
	rm Makefile.tmp
	
# Copiando la lista de archivos a /solo/Makefile
	cd $DIR_BASE/solo
	cp Makefile Makefile.tmp
	BIN_LIST_USR_SOLO=`echo $BIN_LIST_USR | awk '{for(i = 1; i <= NF; i++) printf("\x27$(DIR_USR)/%s\x27, ",$i);}'`
	BIN_LIST_TST_SOLO=`echo $BIN_LIST_TST | awk '{for(i = 1; i <= NF; i++) printf("\x27$(DIR_USR)/tst/%s\x27, ",$i);}'`
	BIN_LIST_BIN_SOLO=`echo $BIN_LIST_BIN | awk '{for(i = 1; i <= NF; i++) printf("\x27$(DIR_USR)/bin/%s\x27, ",$i);}'`
	sed -e 's#^.*mbr.bin.*#\t\x27$(DIR_MBR)/mbr.bin\x27, '"$BIN_LIST_USR_SOLO"' '"$BIN_LIST_TST_SOLO"' '"$BIN_LIST_BIN_SOLO"' \\#g' Makefile.tmp > Makefile
	if [ $? -ne 0 ]
	then
	  cp Makefile.tmp Makefile
	fi
	rm Makefile.tmp
	
# Modificando /tests/Makefile
	cd $DIR_BASE/tests
	
	####### REEMPLAZO DE SECCION 1 #######
	cadena_reemplazo_1="# REEMPLAZAR SECCION_1"
	for binario in $BIN_LIST_USR
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_1=$cadena_reemplazo_1"\nBIN_USR_$dir_binario= $binario #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_TST
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_1=$cadena_reemplazo_1"\nBIN_USR_$dir_binario= $binario #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_BIN
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_1=$cadena_reemplazo_1"\nBIN_USR_$dir_binario= $binario #REEMPLAZAR"
	done
	####### FIN REEMPLAZO DE SECCION 1 #######
	
	####### REEMPLAZO DE SECCION 2 #######
	cadena_reemplazo_2="# REEMPLAZAR SECCION_2"
	for binario in $BIN_LIST_USR
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_2=$cadena_reemplazo_2"\n$dir_binario\t= \$(DIR_USR)\/\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_TST
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_2=$cadena_reemplazo_2"\n$dir_binario\t= \$(DIR_USR)\/tst\/\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_BIN
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_2=$cadena_reemplazo_2"\n$dir_binario\t= \$(DIR_USR)\/bin\/\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	####### FIN REEMPLAZO DE SECCION 2 #######
	
	####### REEMPLAZO DE SECCION 3 #######
	cadena_reemplazo_3="# REEMPLAZAR SECCION_3"
	for binario in $BIN_LIST_USR
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_3=$cadena_reemplazo_3"\nBIN_USR_${dir_binario}_EN_FLOPPY\t= \$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_TST
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_3=$cadena_reemplazo_3"\nBIN_USR_${dir_binario}_EN_FLOPPY\t= \$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_BIN
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_3=$cadena_reemplazo_3"\nBIN_USR_${dir_binario}_EN_FLOPPY\t= \$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	####### FIN REEMPLAZO DE SECCION 3 #######
	
	####### REEMPLAZO DE SECCION 4 #######
	cadena_reemplazo_4="# REEMPLAZAR SECCION_4"
	for binario in $BIN_LIST_USR
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	   cadena_reemplazo_4=$cadena_reemplazo_4"\n\t.\/\$(FAT_TOOL) \$(SODIUM_FDD_IMG) \$($dir_binario)	\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_TST
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	  	   cadena_reemplazo_4=$cadena_reemplazo_4"\n\t.\/\$(FAT_TOOL) \$(SODIUM_FDD_IMG) \$($dir_binario)	\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	
	for binario in $BIN_LIST_BIN
	do
	   dir_binario=`echo $binario | sed 's/.bin//g' | tr "[:lower:]" "[:upper:]"`
	  	   cadena_reemplazo_4=$cadena_reemplazo_4"\n\t.\/\$(FAT_TOOL) \$(SODIUM_FDD_IMG) \$($dir_binario)	\$(BIN_USR_$dir_binario) #REEMPLAZAR"
	done
	####### FIN REEMPLAZO DE SECCION 4 #######
	
	
	cp Makefile Makefile.tmp
	sed -e '/#REEMPLAZAR/d' -e 's/^.*SECCION_1.*/'"$cadena_reemplazo_1"'/g' -e 's/^.*SECCION_2.*/'"$cadena_reemplazo_2"'/g' -e 's/^.*SECCION_3.*/'"$cadena_reemplazo_3"'/g' -e 's/^.*SECCION_4.*/'"$cadena_reemplazo_4"'/g'  Makefile.tmp > Makefile
	
	#Si hubo errores con el sed, recuperamos el Makefile temporal
	if [ $? -ne 0 ]
	then
	  cp Makefile.tmp Makefile
	fi
	
	rm Makefile.tmp
	
	
